module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.changeColumn('documents', 'atlasId', {
      type: Sequelize.UUID,
      allowNull: true,
      onDelete: 'cascade',
      references: {
        model: 'collections',
      },
    });
    await queryInterface.changeColumn('documents', 'userId', {
      type: Sequelize.UUID,
      allowNull: true,
      references: {
        model: 'users',
      },
    });
    await queryInterface.changeColumn('documents', 'parentDocumentId', {
      type: Sequelize.UUID,
      allowNull: true,
      references: {
        model: 'documents',
      },
    });
    await queryInterface.changeColumn('documents', 'teamId', {
      type: Sequelize.UUID,
      allowNull: true,
      onDelete: 'cascade',
      references: {
        model: 'teams',
      },
    });
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.sequelize.query(
      'ALTER TABLE documents DROP CONSTRAINT "atlasId_foreign_idx";'
    );
    await queryInterface.removeIndex('documents', 'atlasId_foreign_idx');
    await queryInterface.sequelize.query(
      'ALTER TABLE documents DROP CONSTRAINT "userId_foreign_idx";'
    );
    await queryInterface.removeIndex('documents', 'userId_foreign_idx');
    await queryInterface.sequelize.query(
      'ALTER TABLE documents DROP CONSTRAINT "parentDocumentId_foreign_idx";'
    );
    await queryInterface.removeIndex(
      'documents',
      'parentDocumentId_foreign_idx'
    );
    await queryInterface.sequelize.query(
      'ALTER TABLE documents DROP CONSTRAINT "teamId_foreign_idx";'
    );
    await queryInterface.removeIndex('documents', 'teamId_foreign_idx');
  },
};
